package com.jy.rhin.support.interceptor.convertor;

import com.jy.rhin.sdk.dto.audit.AuditWrapperDto;

/**
 * 审计记录打包转换器，每个转换器，为一个接口的出参及入参各提供一个打包方法，分别上报 请求审计和响应审计
 *
 * @author liweiwei
 * @param <Req>   入参类型
 * @param <Resp>> 出参类型
 */
public interface AuditInfoConvert<Req, Resp> {
    /**
     * 接口入参，转换审计记录
     *
     * @param req
     * @return
     */
    AuditWrapperDto convertReq(Req req);
    
    /**
     * 
     * @param method 默认方法名即可确定接口,订阅接口除外
     * @param data 订阅接口入口审计需要根据参数确定接口
     * @return
     */
    boolean isMatch(String method,Object data);

    /**
     * 接口出参，转换审计记录
     * void接口，不需要实现该方法
     *
     * @param req
     * @return
     */
    default AuditWrapperDto convertResp(Resp req) {
        return null;
    }

}
